Modern high-end computer (HEC) architectures may embody thousands to millions of processing elements, large amounts of distributed memory with varying degrees of non-local memory, networking and storage infrastructure. These systems present a great opportunity for both static and dynamic optimization of resources utilized by executing applications. Traditionally, computer architectures have labored to present applications with a single, uniform address space, along with reasonable semantics for sequential execution of code and access to data. The resulting paradigm has served well for years, but becomes an impediment to optimal resource allocation when both computation and data are distributed, and when virtually all hardware speedup is accomplished via parallel processing rather than increased clock rates.
A great challenge in efficient distributed computing is to be able to provide system software that makes optimal use of the underlying hardware while providing a usable abstract model of computation for writers of application code. This may generally require that consistent choices be made along the spectrum of system elements, so that control, monitoring, reliability, and security are coherent at every level. Computer specification systems, coordination systems, and languages with clear and reasonable semantics, will also be necessary so that a reasonably large subset of application developers can work productively in the new environment. In addition compilers or interpreters that support efficient distributed execution of application code will be required, and may necessitate related development tools to provide developers with options and insight regarding the execution of application code.
Applications that drive HEC development in general may include graph analysis applications such as graph searching, minimum path searching, and maximum flow analysis; generalized optimization applications, including nonlinear and mixed-integer programming and stochastic optimization; and scientific computing applications including image analysis, data mining, and finite element simulation. Larger consumer-oriented problems are also a target of HEC, and may include information search and indexing, text analysis, and information extraction.